# 上下文管理器
# 有些情况还是非常遗漏 close

# def func():
#     f = open('d:/python/test.txt', 'r', encoding='utf8')
#     # 中间来写其他的操作文件的逻辑
#     # 万一中间的代码里，有 条件判定，函数返回，抛出异常
#     if cond:
#         # 进行条件处理
#         f.close()
#         return
#
#     f.close()

# 使用上下文管理器，就能解决这个问题
def func():
    with open('d:/python/test.txt', 'r', encoding='utf8') as f:
        # 进行文件这里的处理逻辑
        # 假设这里有很多代码
        # 假设这里有很多代码
        # 假设这里有很多代码
        # 假设这里有很多代码
        if cond:
            return
        # 假设这里有很多代码
        # 假设这里有很多代码
        # 假设这里有很多代码
        if cond:
            return
        # 假设这里有很多代码
        # 假设这里有很多代码
        # 假设这里有很多代码
        # 假设这里有很多代码
        # 假设这里有很多代码
        # 假设这里有很多代码
        # 假设这里有很多代码
